legal aprendi algo novo hoje
proff n quero me intrometer em suas aulas mas vou falar nas dificuldades como um aluno teu
lendo essa aula demorou cair a fixa em alguns casos pelo motivo q vou dizer
quando a gente se depara com um script seja la qual for umas das primeiras coisas que observei ate hoje foi que tem uma ou varias tabelas ou começa abrindo uma função
pode ter outros casos mas é oque mais observo
você explicando (pelo menos no meu caso) fico confuso pois não vejo as funções nem o if, else, elseif e etc ()
acredito (pelo menos pra mim) que ficaria mais fácil uma aula usando um script qualquer como exemplo, focando no ponto em questão como no caso de hoje foi as variáveis




info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino
Variáveis
Aula anterior, caso não tenha lido.
Palavras e caracteres reservados que será usado nessa aula:
= { } ( ) function return end local do
Variável nada mais é do que um espaço na memoria que aloca um dado (informação) e contem um nome como identificador (ponteiro) para essa informação.
Lua é uma linguagem dinamicamente tipada e, portanto tu não precisa declarar de que tipo se trata aquele determinado dado.
Lua também é uma linguagem sensível a maiúsculas e minúsculas, portanto existe diferença entre a palavra oi e a palavra Oi (com o “o” maiúsculo).
Como se cria uma variável?
Basicamente declarando uma palavra que seja alfanumérica.
Nomedavariavel
Nomedavariavel2689
umNomeQualquer
Agora que criamos a variável, o que podemos fazer com ela?
Vamos atribuir valores a ela de todo tipo.
E como se atribui valores a ela?
Com o caractere de atribuição; veja:
Nomedavariavel = “essa variável contem esse texto”
number = 546789
tabela = {} -- uma tabela vazia
bool = true -- boolean
digaoi = function() return ‘oi’ end -- outro modo de declarar uma função.
Como eu pego esses valores declarados em variáveis?
Usando o nome que foi declarado pra ele.
Lembre-se que lua diferencia letras maiúsculas de letras minúsculas.
Usando como exemplo as palavras que usei para criar as variáveis acima sendo chamado pela função print:
Nomedavariavel = “essa variável contem esse texto”
print(Nomedavariavel) >> essa variável contem esse texto
print(nomedavariavel) >> nil -- a saída é nula devido a variável não existir; lembre-se que lua diferencia maiúscula de minúscula.
number = 546789
print(number) >> 546789
print(Number) >> nil -- idem.
digaoi = function() return ‘oi’ end
print(digaoi()) >> oi
print(DigaOi()) >> nil
Tu poderás declarar as variáveis uma pós outra; esse recurso não serve somente para diminuir as linhas do código e torna-lo mais legível, mas também é usado como um recurso para pegar múltiplos valores retornados por funções.
Exemplo:
function multiplosRetorno()
return 1,”retorno”, {texto = “não se imprime tabelas”}
end
Para que eu tenha acesso aos dados retornados por tal função, eu teria que atribuir uma variável para cada retorno; dessa forma:
numero, string, tab = multiplosRetorno()
Associando a função as variáveis, eu consigo pegar todos os dados retornados por ela.
print(numero) >> 1
print(string) >> retorno
print(tab.texto) >> não se imprime tabelas
Uma pratica comum em programação é anular um dado desnecessário que fora retornado; usando o caractere underline (linha baixa).
numero, _, tab = multiplosRetorno() -- underline impossibilitando de pegar o valor retornado naquela posição pela função.
Lua dispõe de uma forma própria de operador ternário, que consiste em fazer uma comparação logica na qual se for verdadeiro ele assume o valor atribuído/direcionado pela palavra and ou, caso seja falsa a condição, assume o valor atribuído/direcionado pela palavra or.
condição == logica and valor caso seja verdadeiro or valor caso seja falso
getPlayerLevel(cid) >= 100 and “welcome to hell!!!” or “noob”
Como Lua é uma linguagem dinamicamente tipada, tu poderás mudar o tipo de dado atribuído a variável a qualquer momento.
dado = true
if(type(dado) == "boolean" )then dado = "string" end
print(type(dado)) >> "string"
dado = type(dado) == "string" and 123 or type(dado) -- Forma do operador ternário usado por lua
print(type(dado)) >> "number"
dado = {str = "string"}
print(type(dado)) >> "table"
Vamos explicar um pouco sobre a palavra reservada “local”.
Ao declararmos uma variável, ela assume uma posição global, mas caso não se faça necessário ou não seja permitido que isso ocorra, faz-se do uso da palavra “local” para que aquela variável seja visível apenas naquele bloco e nada mais.
do -- criando um bloco
var = "variavel global"
end
print(var) >> variavel global
Veja que a variável “var” que foi declarada dentro de um bloco ficou visível fora dele, pois se trata de uma variável global, portanto visível para todos; Se tivesse sido declarado à palavra “local” na variável, ela ficaria visível apenas para o bloco e nada mais.
Agora veja esse caso:
var = "variavel global"
do -- criando um bloco
local var = "variavel local"
print(var) >> variavel local
var = "variavel alterada" -- alterando o texto da variável “var”
print(var) >> variavel alterada
end
print(var) >> variavel global
Veja que eu declarei uma variável local dentro de um bloco com o mesmo nome da variável global. A variável local sofreu alterações de texto, só que a variável global não, mesmo tendo o mesmo nome.
Isso se deu devido a que, quando se declara uma variável local, ela só é valida para aquele bloco, todo e qualquer alteração, só valera para ela, não afetando nada externamente.
Agora adicionem em seus códigos variáveis tanto locais quanto globais e atribua a elas valores de vários tipos.
Inté a próxima aula.
Editado Maio 13 por Poccnn